package com.dingpeikeji.quickdeer.modules.wx.realschevehi.service;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.dingpeikeji.quickdeer.core.modules.realsche.dao.TRealscheVehiDao;
import com.dingpeikeji.quickdeer.core.modules.realsche.entity.TRealscheVehi;
import com.dingpeikeji.quickdeer.core.modules.vehi.dao.TRealscheVehisDao;
import com.dingpeikeji.quickdeer.modules.ordervehi.dao.TOrderVehiDao;
import com.dingpeikeji.quickdeer.modules.ordervehi.entity.TOrderVehi;
import com.dingpeikeji.quickdeer.modules.rentproduct.dao.RentproductProcedureDao;
import com.dingpeikeji.quickdeer.modules.rentproduct.entity.ProCompleteorder;
import com.dingpeikeji.quickdeer.modules.wx.realschevehi.dao.WxRealscheVehiDao;

@Service
@Transactional(readOnly = true)
public class WxRealscheVehiService {
	@Autowired
	private WxRealscheVehiDao realscheVehiDao;
	@Autowired
	private TOrderVehiDao orderVehiDao;
	@Autowired
	private RentproductProcedureDao rentproductProcedureDao;

	public List<TRealscheVehi> findRealscheVehiList(TRealscheVehi realscheVehi){
		List<TRealscheVehi> realscheVehiList = realscheVehiDao.findTaskList(realscheVehi);
		return realscheVehiList;
	}
	
	public List<TRealscheVehi> findTaskHistoryList(TRealscheVehi realscheVehi){
		List<TRealscheVehi> realscheVehiList = realscheVehiDao.findTaskHistoryList(realscheVehi);
		return realscheVehiList;
	}
	
	public List<TOrderVehi> findOrderVehiList(String realvehiid){
		TOrderVehi orderVehi = new TOrderVehi();
		orderVehi.setRealvehiid(realvehiid);
		return orderVehiDao.findList(orderVehi);
	}
	
	@Transactional(readOnly = false)
	public boolean updateRealscheVehi(String realvehiid){
		TRealscheVehi realscheVehi = new TRealscheVehi();
		realscheVehi.setRealvehiid(realvehiid);
		realscheVehi.setVehistatus(TRealscheVehi.VEHISTATUS_GO);
		int num = realscheVehiDao.updateVehistatus(realscheVehi);
		if(num > 0) {
			return true;
		}
		return false;
	}
	
	@Transactional(readOnly = false)
	public boolean saveSettle(TRealscheVehi realscheVehi){
		int num = realscheVehiDao.saveSettle(realscheVehi);
		if(num > 0) {
			TRealscheVehi change = new TRealscheVehi();
			change.setRealvehiid(realscheVehi.getRealvehiid());
			change.setVehistatus(TRealscheVehi.VEHISTATUS_GO);
			realscheVehiDao.changeStatus(change);
			return true;
		}
		return false;
	}
	
	@Transactional(readOnly = false)
	public String over(TRealscheVehi realscheVehi){
		try {
			realscheVehi = realscheVehiDao.get(realscheVehi.getRealvehiid());
			Date departdate = realscheVehi.getOrders().getDepartdate();
			if(departdate.after(new Date())) {
				return "未到发车时间不能提前完单";
			}
			ProCompleteorder proCompleteorder = new ProCompleteorder();
			proCompleteorder.setVehiid(Integer.parseInt(realscheVehi.getRealvehiid()));
			rentproductProcedureDao.proCompleteorder(proCompleteorder.toMap().getParam());
			if(proCompleteorder.getReturnflag()==0){
				return null;
			}
			return proCompleteorder.getReturnmsg();
		} catch (NumberFormatException e) {
			return e.getMessage();
		}
		
	}
	
	@Transactional(readOnly = false)
	public boolean pick(TRealscheVehi realscheVehi){
		int num = realscheVehiDao.pick(realscheVehi);
		if(num > 0) {
			return true;
		}
		return false;
	}
	
	@Transactional(readOnly = false)
	public boolean delete(TRealscheVehi realscheVehi){
		int num = realscheVehiDao.delete(realscheVehi);
		if(num > 0) {
			return true;
		}
		return false;
	}
	
	public void insertOffline(TRealscheVehi realscheVehi){
		realscheVehiDao.insertOffline(realscheVehi);
	}
}
